package service

import (
	"context"
	"fmt"
	__ "hospital-srv/basic/proto"
	"hospital-srv/handler/dao"
)

// 品牌添加
func (s *Serve) BrandAdd(_ context.Context, in *__.BrandAddReq) (*__.BrandAddResp, error) {
	//为空校验参数
	if in.BrandName == "" || in.BrandLogo == "" || in.BrandDescription == "" {
		return nil, fmt.Errorf("品牌名称、品牌logo、品牌描述不能为空")
	}
	//品牌描述长度校验
	if len(in.BrandDescription) > 200 {
		return nil, fmt.Errorf("品牌描述不能大于200位")
	}

	brand, err := dao.BrandAdd(in)
	if err != nil {
		return nil, err
	}
	return &__.BrandAddResp{
		Id: int32(brand.Id),
	}, nil
}

// 品牌删除
func (s *Serve) BrandDel(_ context.Context, in *__.BrandDelReq) (*__.BrandDelResp, error) {
	//为空校验参数
	if in.Id <= 0 {
		return nil, fmt.Errorf("品牌id不能为空")
	}
	//删除品牌
	_, err := dao.BrandDel(in)
	if err != nil {
		return nil, err
	}
	return &__.BrandDelResp{}, nil
}

// 品牌修改
func (s *Serve) BrandUpdate(_ context.Context, in *__.BrandUpdateReq) (*__.BrandUpdateResp, error) {
	//为空校验参数
	if in.BrandName == "" || in.BrandLogo == "" || in.BrandDescription == "" {
		return nil, fmt.Errorf("品牌名称、品牌logo、品牌描述不能为空")
	}
	//品牌描述长度校验
	if len(in.BrandDescription) > 200 {
		return nil, fmt.Errorf("品牌描述不能大于200位")
	}

	brand, err := dao.BrandUpdate(in)
	if err != nil {
		return nil, err
	}
	return &__.BrandUpdateResp{
		Id: brand.Id,
	}, nil
}

// 品牌展示
func (s *Serve) BrandFind(_ context.Context, in *__.BrandFindReq) (*__.BrandFindResp, error) {
	find, err := dao.BrandFind(in)
	if err != nil {
		return nil, err
	}
	return &__.BrandFindResp{
		List: find,
	}, nil
}

// 品牌详情
func (s *Serve) BrandDetails(_ context.Context, in *__.BrandDetailsReq) (*__.BrandDetailsResp, error) {
	//为空校验参数
	if in.Id <= 0 {
		return nil, fmt.Errorf("品牌id不能为空")
	}
	details, err := dao.BrandDetails(in)
	if err != nil {
		return nil, err
	}
	return &__.BrandDetailsResp{
		Id:               details.Id,
		BrandName:        details.BrandName,
		BrandLogo:        details.BrandLogo,
		BrandDescription: details.BrandDescription,
	}, nil
}
